package com.seu.spring.advance.ioc.factory;

/**
 * Bean 的容器 (工厂模式)
 * XmlBeanDefinitionReader在完成解析工作后，BeanFactory会将它解析得到的<id, BeanDefinition>键值对注册到自己的beanDefinitionMap中。
 * BeanFactory注册好BeanDefinition后，就立即开始注册BeanPostProcessor相关实现类。
 * 这个过程比较简单：
 * 1、根据BeanDefinition记录的信息，寻找所有实现了BeanPostProcessor接口的类。
 * 2、实例化BeanPostProcessor接口的实现类
 * 3、将实例化好的对象放入List中
 * 4、重复2、3步，直至所有的实现类完成注册
 * <p>
 * 上面简述了BeanPostProcessor接口的用途以及注册的过程。
 * <p>
 * 在完成了xml的解析、BeanDefinition的注册以及BeanPostProcessor的注册过程后。
 * BeanFactory初始化的工作算是结束了，此时BeanFactory处于就绪状态，等待外部程序的调用。
 *
 * @author liangfeihu
 * @since 2018/12/28 15:41
 */
public interface BeanFactory {
    /**
     * get bean from IOC
     *
     * @param beanId
     * @return
     * @throws Exception
     */
    Object getBean(String beanId) throws Exception;
}
